home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / comm / news / amitin119a.lha / tin119.diffs < prev   
Text File  |  1993-04-12  |  17KB  |  636 lines

  1. diff -c2 tin/active.c newtin/active.c
  2. *** tin/active.c    Fri Mar 23 12:25:14 19101
  3. --- newtin/active.c    Sat Apr 03 08:23:26 1993
  4. ***************
  5. *** 21,24 ****
  6. --- 21,41 ----
  7.   int active_index = -1;
  8.   
  9. + #ifdef AMIGA
  10. + /* Finds the number of groups as set by actived. Helps to eliminate
  11. + wasted memory being allocated. */
  12. + int get_active_num()
  13. + {
  14. +     char *str;
  15. +     int num;
  16. +     if ((str = getenv("TIN_GROUPS")) == 0)
  17. +         return DEFAULT_ACTIVE_NUM;
  18. +     num = atoi(str);
  19. +     return num ? num : DEFAULT_ACTIVE_NUM;
  20. + }
  21. + #endif
  22.   /*
  23.    *  Resync active file when SIGALRM signal received that
  24. ***************
  25. *** 37,41 ****
  26. --- 54,62 ----
  27.           }
  28.           free_active_arrays ();
  29. + #ifdef AMIGA
  30. +         max_active = get_active_num();
  31. + #else
  32.           max_active = DEFAULT_ACTIVE_NUM;
  33. + #endif
  34.           expand_active ();
  35.           read_mail_active_file ();
  36. ***************
  37. *** 214,218 ****
  38. --- 235,243 ----
  39.                */
  40.               active[num_active].type = GROUP_TYPE_NEWS;
  41. + #ifdef AMIGA
  42. +             active[num_active].name = active_str_dup(buf);
  43. + #else
  44.               active[num_active].name = str_dup (buf);
  45. + #endif
  46.               active[num_active].spooldir = spooldir;
  47.               active[num_active].description = (char *) 0;
  48. diff -c2 tin/actived.c newtin/actived.c
  49. *** tin/actived.c    Fri Mar 23 12:25:14 19101
  50. --- newtin/actived.c    Sat Apr 03 13:16:04 1993
  51. ***************
  52. *** 28,31 ****
  53. --- 28,33 ----
  54.       FILE *fp, *ng, *active;
  55.       long x;
  56. +     long numgroups = 0;
  57. +     char buf[20];
  58.   
  59.       if ((ng = fopen (NEWSGROUPS_FILE, "r")) == (FILE *) 0) {
  60. ***************
  61. *** 60,64 ****
  62.               x = 0;
  63.           }
  64. !         fprintf (active, "%s %05d 00001 y\n", groupname, x);
  65.       }
  66.   }
  67. --- 62,71 ----
  68.               x = 0;
  69.           }
  70. !         fprintf (active, "%s %05ld 00001 y\n", groupname, x);
  71. !         numgroups++;
  72.       }
  73. +     fclose(ng);
  74. +     sprintf(buf,"%d",numgroups+1);
  75. +     setenv("TIN_GROUPS",buf);
  76.   }
  77. diff -c2 tin/feed.c newtin/feed.c
  78. *** tin/feed.c    Fri Mar 23 12:25:24 19101
  79. --- newtin/feed.c    Sun Mar 28 12:57:08 1993
  80. ***************
  81. *** 508,516 ****
  82.               break;
  83.           case FEED_SAVE:
  84. - #ifndef AMIGA
  85.               if (proc_ch != 'n' && is_mailbox == FALSE) {
  86.                   ret2 = post_process_files (proc_ch);
  87.               }
  88. - #endif
  89.               free_save_array ();
  90.               break;
  91. --- 508,514 ----
  92. diff -c2 tin/hashstr.c newtin/hashstr.c
  93. *** tin/hashstr.c    Fri Mar 23 12:25:26 19101
  94. --- newtin/hashstr.c    Sat Apr 03 08:53:45 1993
  95. ***************
  96. *** 81,88 ****
  97.       struct hashnode *p;
  98.   
  99.       p = (struct hashnode *) my_malloc ((unsigned) sizeof (struct hashnode));
  100.   
  101. -     p->next = (struct hashnode *) 0;
  102.       iptr = (int *) my_malloc ((unsigned) strlen (s) + sizeof (int) + 1);
  103.       *iptr++ = -1;
  104.       p->s = (char *) iptr;
  105. --- 81,94 ----
  106.       struct hashnode *p;
  107.   
  108. + #ifdef AMIGA
  109. +     p = (struct hashnode *) pool_malloc(1, (unsigned) sizeof (struct hashnode)
  110. +         + strlen(s) + sizeof (int) + 1);
  111. +     iptr = (int *) &p[1];
  112. + #else
  113.       p = (struct hashnode *) my_malloc ((unsigned) sizeof (struct hashnode));
  114.   
  115.       iptr = (int *) my_malloc ((unsigned) strlen (s) + sizeof (int) + 1);
  116. + #endif
  117. +     p->next = (struct hashnode *) 0;
  118.       *iptr++ = -1;
  119.       p->s = (char *) iptr;
  120. ***************
  121. *** 110,113 ****
  122. --- 116,120 ----
  123.       for (i = 0; i < HASHNODE_TABLE_SIZE; i++)
  124.           if (table[i] != (struct hashnode *) 0) {
  125. + #ifndef AMIGA
  126.               p = table[i];
  127.               while (p != (struct hashnode *) 0) {
  128. ***************
  129. *** 121,125 ****
  130. --- 128,136 ----
  131.                   p = next;
  132.               }
  133. + #endif
  134.               table[i] = (struct hashnode *) 0;
  135.           }
  136. + #ifdef AMIGA
  137. +     pool_free(1);
  138. + #endif
  139.   }
  140. diff -c2 tin/help.c newtin/help.c
  141. *** tin/help.c    Fri Mar 23 12:25:26 19101
  142. --- newtin/help.c    Tue Mar 23 12:08:16 1993
  143. ***************
  144. *** 360,364 ****
  145.   void display_info_page ()
  146.   {
  147. !     char buf[PATH_LEN];
  148.       int i, help_lines;
  149.       
  150. --- 360,364 ----
  151.   void display_info_page ()
  152.   {
  153. !     char buf[LEN];
  154.       int i, help_lines;
  155.       
  156. diff -c2 tin/init.c newtin/init.c
  157. *** tin/init.c    Fri Mar 23 12:25:28 19101
  158. --- newtin/init.c    Mon Mar 29 05:04:38 1993
  159. ***************
  160. *** 330,334 ****
  161. --- 330,338 ----
  162.       strcpy (spooldir_alias, "news");
  163.       strcpy (spooldir, SPOOLDIR);
  164. + #ifdef AMIGA
  165. +     strcpy (mailer, get_val ("TIN_MAIL", DEFAULT_MAILER));
  166. + #else
  167.       strcpy (mailer, get_val ("MAILER", DEFAULT_MAILER));
  168. + #endif /* AMIGA */
  169.       strcpy (default_printer, DEFAULT_PRINTER);
  170.       strcpy (quote_chars, DEFAULT_COMMENT);
  171. diff -c2 tin/lang.c newtin/lang.c
  172. *** tin/lang.c    Fri Mar 23 12:25:29 19101
  173. --- newtin/lang.c    Sun Mar 28 13:37:41 1993
  174. ***************
  175. *** 33,37 ****
  176. --- 33,41 ----
  177.   char txt_purge[] = "Purging %s...";
  178.   char txt_cannot_open_art[] = "Can't open article %s: ";
  179. + #ifdef DONT_HAVE_SELECT
  180. + char txt_indexing_num[] = "Indexing %s...%4d/%d";
  181. + #else
  182.   char txt_indexing_num[] = "Indexing %s ('q' to quit)...%4d/%d";
  183. + #endif
  184.   char txt_corrupt_index[] = "Index file %s corrupted. error %d on article %d";
  185.   char txt_checking_for_news[] = "Checking for news...";
  186. ***************
  187. *** 49,53 ****
  188.   char txt_art_thread_regex_tag[] = " a)rticle, t)hread, h)ot, p)attern, T)agged articles, q)uit: ";
  189.   #ifdef AMIGA
  190. ! char txt_post_process_type[] = "Process n)one, s)har, u)ud, l)ist lha, e)xt lha, L)ist zip, E)xt zip, q)uit: ";
  191.   #else
  192.   char txt_post_process_type[] = "Process n)one, s)har, u)ud, l)ist zoo, e)xt zoo, L)ist zip, E)xt zip, q)uit: ";
  193. --- 53,57 ----
  194.   char txt_art_thread_regex_tag[] = " a)rticle, t)hread, h)ot, p)attern, T)agged articles, q)uit: ";
  195.   #ifdef AMIGA
  196. ! char txt_post_process_type[] = "Process n)one, s)har, u)ud, q)uit: ";
  197.   #else
  198.   char txt_post_process_type[] = "Process n)one, s)har, u)ud, l)ist zoo, e)xt zoo, L)ist zip, E)xt zip, q)uit: ";
  199. ***************
  200. *** 112,116 ****
  201. --- 116,124 ----
  202.   char txt_art_posted[] = "Article posted";
  203.   char txt_art_rejected[] = "Article rejected (saved to %s)";
  204. + #ifdef HAVE_ISPELL
  205.   char txt_quit_edit_post[] = "q)uit, e)dit, i)spell, p)ost: ";
  206. + #else
  207. + char txt_quit_edit_post[] = "q)uit, e)dit, p)ost: ";
  208. + #endif
  209.   char txt_help_4[] = "4$       Goto spooldir 4 ($=goto last spooldir)\r\n";
  210.   char txt_help_i_4[] = "4$       Goto article 4 ($=goto last article)\r\n";
  211. ***************
  212. *** 332,336 ****
  213. --- 340,348 ----
  214.   char txt_no_mail_address[] = "No mail address";
  215.   char txt_no_responses[] = "No responses";
  216. + #ifdef HAVE_ISPELL
  217.   char txt_quit_edit_ispell_send[] = "q)uit, e)dit, i)spell, s)end";
  218. + #else
  219. + char txt_quit_edit_ispell_send[] = "q)uit, e)dit, s)end";
  220. + #endif
  221.   char txt_quit_edit_send[] = "q)uit, e)dit, s)end";
  222.   char txt_quit_edit_delete[] = "q)uit, e)dit, d)elete";
  223. Only in newtin: lang.o
  224. diff -c2 tin/mail.c newtin/mail.c
  225. *** tin/mail.c    Fri Mar 23 12:25:29 19101
  226. --- newtin/mail.c    Sat Apr 03 08:34:34 1993
  227. ***************
  228. *** 237,241 ****
  229. --- 237,245 ----
  230.            
  231.           if (i >= 0 && active[i].description == (char *) 0) {
  232. + #ifdef AMIGA
  233. +             active[i].description = active_str_dup (p);
  234. + #else
  235.               active[i].description = str_dup (p);
  236. + #endif
  237.               if (active[i].type == GROUP_TYPE_NEWS) {
  238.                   if (fp_save && read_news_via_nntp && 
  239. diff -c2 tin/memory.c newtin/memory.c
  240. *** tin/memory.c    Fri Mar 23 12:25:29 19101
  241. --- newtin/memory.c    Sat Apr 03 08:42:31 1993
  242. ***************
  243. *** 57,61 ****
  244. --- 57,65 ----
  245.        * active file arrays
  246.        */
  247. + #ifdef AMIGA
  248. +     max_active = get_active_num();
  249. + #else
  250.       max_active = DEFAULT_ACTIVE_NUM;
  251. + #endif
  252.       max_active_size = DEFAULT_ACTIVE_SIZE_NUM;
  253.   
  254. ***************
  255. *** 316,320 ****
  256. --- 320,328 ----
  257.   
  258.       if (active != (struct group_t *) 0) {        /* active[] */
  259. + #ifdef AMIGA
  260. +         pool_free(0);
  261. + #endif
  262.           for (i=0 ; i < num_active ; i++) {
  263. + #ifndef AMIGA
  264.               if (active[i].name != (char *) 0) {
  265.                   free ((char *) active[i].name);
  266. ***************
  267. *** 325,328 ****
  268. --- 333,337 ----
  269.                   active[i].description = (char *) 0;
  270.               }
  271. + #endif
  272.               if (active[i].type == GROUP_TYPE_MAIL &&
  273.                   active[i].spooldir != (char *) 0) {
  274. ***************
  275. *** 468,469 ****
  276. --- 477,540 ----
  277.       return p;
  278.   }
  279. + #ifdef AMIGA
  280. + /* Allocate memory in blocks of 4096 for strings. This means there are
  281. + fewer calls made to malloc() and free(). Hopefully this should speed
  282. + things up a little... */
  283. + #define STR_ALLOC_SIZE 4096
  284. + struct str_list
  285. + {    struct str_list *next;
  286. +     char *strptr;
  287. + };
  288. + struct pool
  289. + {    int avail;
  290. +     struct str_list *first, *cur;
  291. + } pools[2] = {{0,0,0},{0,0,0}};
  292. + char *pool_malloc(pn, size)
  293. + {    struct pool *pp;
  294. +     char *cp;
  295. +     pp = &pools[pn];
  296. +    size = ~3L & (size + 3);
  297. +     if (pp->avail < size)
  298. +     {    if (pp->first == 0)
  299. +         {    pp->first = pp->cur = (struct str_list *)my_malloc(STR_ALLOC_SIZE + sizeof(struct str_list));
  300. +         } else
  301. +         {    pp->cur->next = (struct str_list *)my_malloc(STR_ALLOC_SIZE + sizeof(struct str_list));
  302. +             pp->cur = pp->cur->next;
  303. +         }
  304. +         pp->cur->strptr = (char *) &pp->cur[1];
  305. +         pp->cur->next = 0;
  306. +         pp->avail = STR_ALLOC_SIZE;
  307. +     }
  308. +     cp = pp->cur->strptr;
  309. +     pp->avail -= size;
  310. +     pp->cur->strptr = cp + size;
  311. +     return cp;
  312. + }
  313. + void pool_free(pn)
  314. + {    struct str_list *p,*next;
  315. +     struct pool *pp;
  316. +     pp = &pools[pn];
  317. +     if ((p = pp->first) == 0) return;
  318. +     for (; p; p = next)
  319. +     {    next = p->next;
  320. +         free (p);
  321. +     }
  322. +     pp->first = pp->cur = 0;
  323. +     pp->avail = 0;
  324. + }
  325. + #endif /* AMIGA */
  326. diff -c2 tin/misc.c newtin/misc.c
  327. *** tin/misc.c    Fri Mar 23 12:25:30 19101
  328. --- newtin/misc.c    Sat Apr 03 08:42:22 1993
  329. ***************
  330. *** 381,384 ****
  331. --- 381,398 ----
  332.   }
  333.   
  334. + #ifdef AMIGA
  335. + char *active_str_dup (char *str)
  336. + {
  337. +     char *dup = (char *) 0;
  338. +     if (str) {
  339. +         dup = pool_malloc(0, strlen (str)+1);
  340. +         strcpy (dup, str);
  341. +     }
  342. +     return dup;
  343. + }
  344. + #endif /* AMIGA */
  345.   
  346.   int invoke_cmd (nam)
  347. diff -c2 tin/post.c newtin/post.c
  348. *** tin/post.c    Fri Mar 23 12:25:33 19101
  349. --- newtin/post.c    Sat Apr 03 08:45:14 1993
  350. ***************
  351. *** 66,71 ****
  352.               posted[i].action = buf[j];
  353.               j += 2;
  354. !             for (k=j,j=0 ; buf[k] != '|' && buf[k] != ',' ; k++, j++) {
  355. !                 posted[i].group[j] = buf[k];
  356.               }
  357.               if (buf[k] == ',') {
  358. --- 66,71 ----
  359.               posted[i].action = buf[j];
  360.               j += 2;
  361. !             for (k=j,j=0 ; buf[k] != '|' && buf[k] != ',' ; k++) {
  362. !                 if (j < 75) posted[i].group[j++] = buf[k];
  363.               }
  364.               if (buf[k] == ',') {
  365. ***************
  366. *** 80,85 ****
  367.               posted[i].group[j++] = '\0';
  368.               k++;
  369. !             for (j=k,k=0 ; buf[j] != '\n' ; j++, k++) {
  370. !                 posted[i].subj[k] = buf[j];
  371.               }
  372.               posted[i].subj[k++] = '\0';
  373. --- 80,85 ----
  374.               posted[i].group[j++] = '\0';
  375.               k++;
  376. !             for (j=k,k=0 ; buf[j] != '\n' ; j++) {
  377. !                 if (k < 119) posted[i].subj[k++] = buf[j];
  378.               }
  379.               posted[i].subj[k++] = '\0';
  380. ***************
  381. *** 873,877 ****
  382.                   wait_message (msg);
  383.   #ifdef AMIGA
  384. !                 sprintf (buf, "%s <%s -f %s", mailer, nam, userid);
  385.   #else                
  386.                   sprintf (buf, "%s \"%s\" < %s", mailer, mail_to, nam);
  387. --- 873,877 ----
  388.                   wait_message (msg);
  389.   #ifdef AMIGA
  390. !                 sprintf (buf, mailer, nam, userid, mail_to);
  391.   #else                
  392.                   sprintf (buf, "%s \"%s\" < %s", mailer, mail_to, nam);
  393. ***************
  394. *** 975,979 ****
  395.   #endif
  396.       fprintf (fp, "\nCFG1: active=%d  arts=%d  reread=%d  longfilenames=%d  setuid=%d\n",
  397. !         DEFAULT_ACTIVE_NUM, 
  398.           DEFAULT_ARTICLE_NUM, 
  399.           reread_active_file_secs,
  400. --- 975,979 ----
  401.   #endif
  402.       fprintf (fp, "\nCFG1: active=%d  arts=%d  reread=%d  longfilenames=%d  setuid=%d\n",
  403. !         max_active,
  404.           DEFAULT_ARTICLE_NUM, 
  405.           reread_active_file_secs,
  406. ***************
  407. *** 1023,1027 ****
  408.                       wait_message (msg);
  409.   #ifdef AMIGA
  410. !                     sprintf (buf, "%s <%s -f %s", mailer, nam, userid);
  411.   #else
  412.                       sprintf (buf, "%s \"%s\" < %s", mailer, mail_to, nam);
  413. --- 1023,1027 ----
  414.                       wait_message (msg);
  415.   #ifdef AMIGA
  416. !                     sprintf (buf, mailer, nam, userid, mail_to);
  417.   #else
  418.                       sprintf (buf, "%s \"%s\" < %s", mailer, mail_to, nam);
  419. ***************
  420. *** 1126,1130 ****
  421.               insert_x_headers (nam);
  422.   #ifdef AMIGA
  423. !             sprintf (buf, "%s <%s -f %s", mailer, nam, userid);
  424.   #else
  425.               sprintf (buf, "%s \"%s\" < %s", mailer, mail_to, nam);
  426. --- 1126,1130 ----
  427.               insert_x_headers (nam);
  428.   #ifdef AMIGA
  429. !             sprintf (buf, mailer, nam, userid, mail_to);
  430.   #else
  431.               sprintf (buf, "%s \"%s\" < %s", mailer, mail_to, nam);
  432. ***************
  433. *** 1491,1496 ****
  434.   
  435.   #ifdef AMIGA
  436. !     sprintf (cp, "uucp:c/postnews %s", name);
  437. ! #else            
  438.   #    ifdef INEWSDIR
  439.           strcpy (buf, INEWSDIR);
  440. --- 1491,1501 ----
  441.   
  442.   #ifdef AMIGA
  443. !         {    char *p;
  444. !             if ((p = getenv("TIN_POST")) != (char *)0)
  445. !                 sprintf (cp, p, name);
  446. !             else
  447. !                 sprintf (cp, "uucp:c/postnews %s", name);
  448. !         }
  449. ! #else
  450.   #    ifdef INEWSDIR
  451.           strcpy (buf, INEWSDIR);
  452. ***************
  453. *** 1590,1594 ****
  454. --- 1595,1603 ----
  455.   {
  456.       if (reread_active_for_posted_arts) {
  457. + #ifndef AMIGA
  458. + /* The active file on the Amiga is not updated until actived is re-run */
  459. + /* so there's no point in re-readint it. */
  460.           yank_active_file ();        
  461. + #endif
  462.           reread_active_for_posted_arts = FALSE;        
  463.       }
  464. diff -c2 tin/proto.h newtin/proto.h
  465. *** tin/proto.h    Fri Mar 23 12:25:34 19101
  466. --- newtin/proto.h    Sat Apr 03 08:49:40 1993
  467. ***************
  468. *** 152,155 ****
  469. --- 152,159 ----
  470.   extern char *my_malloc(unsigned size);
  471.   extern char *my_realloc(char *p, unsigned size);
  472. + #ifdef AMIGA
  473. + extern char *pool_malloc(int pool, int size);
  474. + extern void pool_free(int pool);
  475. + #endif
  476.   /* misc.c */
  477.   extern void asfail(char *file, int line, char *cond);
  478. ***************
  479. *** 163,166 ****
  480. --- 167,173 ----
  481.   extern void rename_file(char *old_filename, char *new_filename);
  482.   extern char *str_dup(char *str);
  483. + #ifdef AMIGA
  484. + extern char *active_str_dup(char *str);
  485. + #endif
  486.   extern int invoke_cmd(char *nam);
  487.   extern void draw_percent_mark(int cur_num, int max_num);
  488. ***************
  489. *** 564,567 ****
  490. --- 571,578 ----
  491.   extern char *my_malloc(/*unsigned size*/);
  492.   extern char *my_realloc(/*char *p, unsigned size*/);
  493. + #ifdef AMIGA
  494. + extern char *pool_malloc(/*int pool, int size*/);
  495. + extern void pool_free(/*int pool*/);
  496. + #endif
  497.   /* misc.c */
  498.   extern void asfail(/*char *file, int line, char *cond*/);
  499. ***************
  500. *** 575,578 ****
  501. --- 586,592 ----
  502.   extern void rename_file(/*char *old_filename, char *new_filename*/);
  503.   extern char *str_dup(/*char *str*/);
  504. + #ifdef AMIGA
  505. + extern char *active_str_dup(/*char *str*/);
  506. + #endif
  507.   extern int invoke_cmd(/*char *nam*/);
  508.   extern void draw_percent_mark(/*int cur_num, int max_num*/);
  509. diff -c2 tin/save.c newtin/save.c
  510. *** tin/save.c    Fri Mar 23 12:25:35 19101
  511. --- newtin/save.c    Mon Mar 29 05:53:11 1993
  512. ***************
  513. *** 193,198 ****
  514.                           if (check_start_save == MAIL_ANY_NEWS) {
  515.   #ifdef AMIGA
  516. !                             sprintf (buf, "%s <%s -f %s", 
  517. !                                 mailer, savefile, userid);
  518.   #else
  519.                               sprintf (buf, "%s \"%s\" < %s", mailer,
  520. --- 193,197 ----
  521.                           if (check_start_save == MAIL_ANY_NEWS) {
  522.   #ifdef AMIGA
  523. !                             sprintf (buf, mailer, savefile, userid, mail_news_user);
  524.   #else
  525.                               sprintf (buf, "%s \"%s\" < %s", mailer,
  526. ***************
  527. *** 260,264 ****
  528.                   }
  529.   #ifdef AMIGA
  530. !                 sprintf (buf, "%s <%s -f %s", mailer, logfile, userid);
  531.   #else
  532.                   sprintf (buf, "%s \"%s\" < %s", mailer,
  533. --- 259,264 ----
  534.                   }
  535.   #ifdef AMIGA
  536. !                 sprintf (buf, mailer, logfile, userid,
  537. !                     (check_start_save == MAIL_ANY_NEWS ? mail_news_user : userid));
  538.   #else
  539.                   sprintf (buf, "%s \"%s\" < %s", mailer,
  540. ***************
  541. *** 1060,1064 ****
  542. --- 1060,1075 ----
  543.       wait_message (txt_uudecoding);
  544.       
  545. + #ifdef AMIGA
  546. +     {    char currentdir[128];
  547. +         getcwd(currentdir,128);
  548. +         chdir(file_out_dir);
  549. +         sprintf (buf, "uudecode %s", file_out);
  550. +         invoke_cmd (buf);
  551. +         chdir(currentdir);
  552. +     }
  553. + #else
  554.       sprintf (buf, "cd %s; uudecode %s", file_out_dir, file_out); 
  555.       if (invoke_cmd (buf)) {
  556.           /*
  557. ***************
  558. *** 1134,1137 ****
  559. --- 1145,1149 ----
  560.           }
  561.       }
  562. + #endif
  563.   
  564.       delete_processed_files ();
  565. ***************
  566. *** 1213,1216 ****
  567. --- 1225,1237 ----
  568.               fclose (fp_out);
  569.   
  570. + #ifdef AMIGA
  571. +             {    char currentdir[128];
  572. +                 getcwd (currentdir,128);
  573. +                 chdir (file_out_dir);
  574. +                 sprintf (buf, "unshar %s", file_out);
  575. +                 invoke_cmd (buf);
  576. +                 chdir (currentdir);
  577. +             }
  578. + #else
  579.               sprintf (buf, "cd %s; sh %s", file_out_dir, file_out); 
  580.               fputs ("\r\n", stdout);
  581. ***************
  582. *** 1219,1222 ****
  583. --- 1240,1244 ----
  584.               invoke_cmd (buf);
  585.               Raw (TRUE);
  586. + #endif
  587.               unlink (file_out);
  588.           }
  589. diff -c2 tin/tin.h newtin/tin.h
  590. *** tin/tin.h    Fri Mar 23 12:25:41 19101
  591. --- newtin/tin.h    Mon Mar 29 05:51:16 1993
  592. ***************
  593. *** 268,275 ****
  594.   #    ifdef AMIGA
  595.   #        define    DEFAULT_EDITOR    "c:ed"
  596. ! #        define    DEFAULT_MAILER    "uucp:c/sendmail"
  597.   #        define    DEFAULT_MAILBOX    "uumail:"
  598.   #        define    DEFAULT_PRINTER    "c:type"    /* Not Yet Implemented */
  599. ! #        define    DEFAULT_SHELL    "c:newshell"
  600.   #    endif
  601.   #    ifdef __hpux
  602. --- 268,275 ----
  603.   #    ifdef AMIGA
  604.   #        define    DEFAULT_EDITOR    "c:ed"
  605. ! #        define    DEFAULT_MAILER    "uucp:c/sendmail <%s -f %s"
  606.   #        define    DEFAULT_MAILBOX    "uumail:"
  607.   #        define    DEFAULT_PRINTER    "c:type"    /* Not Yet Implemented */
  608. ! #        define    DEFAULT_SHELL    "c:newshell" /* Neither is this */
  609.   #    endif
  610.   #    ifdef __hpux
  611.